const fs = require('fs');

// 这样不方便 express 有 router
/* module.exports = (app)=>{
    // 首页加载
    app.get('/',(req,res)=>{
        fs.readFile('./db.json','utf8',(err,data)=>{
            if (err) {
                return res.status(500).send('Server error');
            }
            // 此时的data是字符串
            let students = JSON.parse(data).students;
            res.render('index.html',{
                exs: ["学生总人数","男女比例","年龄分层"],
                students: students
            });
        });
        
    });

    // 
} */

const express = require('express');

const Student = require('./student');

// 1 - 引入 router
const router = express.Router();


// 2 - 路由挂载
router.get('/',(req,res)=>{
    /* fs.readFile('./db.json','utf8',(err,data)=>{
        if (err) {
            return res.status(500).send('Server error');
        }
        // 此时的data是字符串
        let students = JSON.parse(data).students;
        res.render('index.html',{
            exs: ["学生总人数","男女比例","年龄分层"],
            students: students
        });
    }); */

    // 调用 studentjs 中的 find 方法，采用异步处理结果 回调函数

    Student.find (function (err,students) {
        if (err) {
            return res.status(500).send('Server error');
        }
        // 此时的data是字符串
        res.render('index.html',{
            exs: ["学生总人数","男女比例","年龄分层"],
            students: students
        });
    });
    
});

// 渲染首页 

router.get('/students',(req,res)=>{

    res.render('index.html');
    
});

//  请求 添加新成员的页面

router.get('/students/new',(req,res)=>{

    res.render('new.html');
    
});

// 提交 添加新成员的 数据 

router.post('/students/new',(req,res)=>{
     // 1 - 获取表单数据
        // 引入中间件 body-parser
        // console.log(req.body);
     // 2 - 处理 
        // 保存数据到 db.json
        // 先读取出来，读出来的都是字符窜，转成对象，操作，再转成字符串存进去
     // 3 - 
     let student = req.body;

     // 下边开始调用 save方法  mongooose实例的save
    new Student(student).save(function (err) {
        if (err) {
            return res.status(500).send('Server error');
        }
        // 文件保存成功后  重定向到首页
        res.redirect('/');
    });
});

// 请求编辑页面

router.get('/students/edit',(req,res)=>{

    // 1 - 客户端列表需要id参数
    // 2 - 获取所需编辑成员的id
    // 3 - 把这个成员的信息拿过来 渲染 编辑页面 art-template


    // 注意 这里请求的id 是mongodb数据库自动生成的id 这个id是一个带有 "" 的字符串,所以要去掉
    let id = req.query.id.replace(/"/g,'');
    Student.findById(id,(err,student)=>{
        if (err) {
            return res.status(500).send('Server error');
        }       
        //console.log(student);
        res.render('edit.html',{
            student: student
        }); 
    })

    

    
});

// 提交编辑页面

router.post('/students/edit',(req,res)=>{
    // 1 - 获取表单数据 req.body
    let con = req.body;
    /* 
        注意 这里取出的表单数据，并没有 ID，这时候要在表单中 
        写一个隐藏文本域 input type=hidden
    */
    
    //2 - 更新
    let id = req.body.id.replace(/"/g,"");
    Student.findByIdAndUpdate(id,con,(err)=>{
        if (err) {
            return res.status(500).send('Server error');
        }
        // 
        res.redirect('/');
    });
    
});

// 删除页面 

router.get('/students/delete',(req,res)=>{

    let id = req.query.id.replace(/"/g,'');
    //console.log(id);

    // 注意查看API
    Student.findByIdAndRemove(id,(err)=>{
        if (err) {
            return res.status(500).send('Server error');
        }
        res.redirect('/');
    });
     
});

// 3 - 导出路由
module.exports = router;
